Skip to content

Conversation

@pmenzel
Copy link
Collaborator

@pmenzel pmenzel commented Jul 23, 2026

Install guile2 (with shared libraries), and update quite some dependencies. libxml2_compat and poppler_compat are needed.

pmenzel and others added 20 commits July 21, 2026 23:29
LibreOffice 26.2.5.1's bundled xmlsec1 requires libxml2 >= 2.9.13; the
system package was 2.9.12. Bump to the latest upstream release (2.15.3).

ABI break: libxml2 2.14.0 bumped the ELF soname from libxml2.so.2 to
libxml2.so.16 and restricts binary compatibility to 2.14+ (configure.ac
sets LIBXML_MINOR_COMPAT=14). Upstream NEWS (v2.14.0):

  "Binary compatibility is restricted to versions 2.14 or newer. On ELF
   systems, the soname was bumped from libxml2.so.2 to libxml2.so.16."

So anything still linked against libxml2.so.2 will not resolve against
2.15.3; the old soname is preserved by the new libxml2_compat package.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
libxml2 2.14.0 bumped the soname libxml2.so.2 -> libxml2.so.16, so the
updated libxml2-2.15.3 no longer provides libxml2.so.2. Ship the old
shared library (extracted from the libxml2-2.9.12-0 package) so existing
binaries linked against libxml2.so.2 keep working, following the same
pattern as the other *_compat packages (e.g. nettle_compat, poppler_compat).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Point MESON at a real meson (1.6.1); /bin/meson is a prun bash wrapper
  that configure fails to run as a Python script, aborting at the meson
  check.
- Drop the obsolete libassuan_autoheader.patch: the Linux libassuan build
  no longer runs autoreconf in 26.2.5.1, and the only remaining hunk
  touched the Windows/MSC path we never build.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
LibreOffice 26.2.5.1's sdext/xpdfwrapper uses poppler's errEncrypted,
which is not declared in the old 21.10.0 (2021) system poppler, so the
--with-system-poppler build fails at wrapper_gpl.cxx:246. Update the
system poppler to the latest release.

poppler 26.07.0 requires C++23; the default gcc (12.5.0) only has
partial support, so build with gcc 14.1.0 (CC=gcc14 CXX=g++14).

ABI break (backward incompatible): the soname of libpoppler
(.so.114 -> .so.162) and libpoppler-cpp (.so.0 -> .so.3) changed, so
binaries built against 21.10.0 need rebuilding. A matching
poppler_compat package ships the old shared libraries. libpoppler-glib
(.so.8) and libpoppler-qt5 (.so.1) kept their sonames.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
poppler 26.07.0 bumped libpoppler.so.114 -> .so.162 and
libpoppler-cpp.so.0 -> .so.3. Ship the old shared libraries extracted
from the poppler-21.10.0-1 package so binaries linked against them keep
working. glib (.so.8) and qt5 (.so.1) kept their sonames and need no
compat entry. Bump the compat version to 21.10.0-0 to reflect the newest
preserved soname source.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
poppler 26.07.0 requires Freetype >= 2.13; the system freetype is 2.10.4
(2020), so poppler's CMake configure fails with "Found unsuitable
version 2.10.4, but required is at least 2.13". Update the system
freetype to the latest release.

No ABI break: version_info 26:6:20 -> soname libfreetype.so.6 is
unchanged, so no compat package is needed. The mee_patch seds still
apply (SUBPIXEL_HINTING is now enabled upstream by default, so that
branch simply no-ops while SUBPIXEL_RENDERING is still enabled).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
NSPR is NSS's mandatory runtime dependency; NSS 3.126 requires
NSPR >= 4.37. Update NSPR to the latest release (4.39). The two
mee_patch seds still apply (RELEASE_BINS in pr/src/misc/Makefile.in and
the $(LIBRARY) entries in config/rules.mk are unchanged).

No ABI break: NSPR ships unversioned shared libraries (libnspr4.so,
libplc4.so, libplds4.so), so no compat package is needed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
poppler 26.07.0 requires NSS >= 3.98 for PDF digital-signature support
(ENABLE_NSS3, on by default), and libreoffice.be0 builds
--with-system-nss; the system NSS is 3.73 (2021). Update to the latest
release (3.126, needs NSPR >= 4.37 -> see the NSPR 4.39 update).

The BLFS "standalone" patch is now version-agnostic and byte-identical
to the old nss-3.73-standalone-1.patch (same md5 f8a7ce47...), so the
existing beehive upload still applies and it patches 3.126 (one hunk
with harmless fuzz). Beehive keys on md5 AND filename, so keep the old
nss-3.73-standalone-1.patch filename in the URL.

Drop libcrmf.a from mee_install: NSS 3.126 removed crmf from the default
library build (no longer listed in lib/Makefile NSS_SRCDIRS), so the
static libcrmf.a is no longer produced. The .chk files are still built
and installed. Nothing downstream links libcrmf.

No ABI break: NSS ships unversioned shared libraries (libnss3.so,
libssl3.so, libsmime3.so, libnssutil3.so, ...) and keeps ABI additively
compatible across 3.x, so no compat package is needed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
gpgme 1.24.3 requires libgpg-error >= 1.47; the system is 1.42. Update
to the latest release (1.61).

No ABI break: libtool version-info 42:1:42 -> soname libgpg-error.so.0
is unchanged, so no compat package is needed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
poppler 26.07.0 needs Gpgmepp >= 1.19 (PDF GPG-signature support), and
the system gpgme is 1.16.0. gpgme 2.x split the C++ (Gpgmepp), Qt and
Python bindings into separate releases, so stay on the latest 1.x that
still bundles Gpgmepp; GpgmeppConfig then reports 1.24.3 (>= 1.19).

Requires libgpg-error >= 1.47 (see the libgpg-error 1.61 update);
libassuan 2.5.3 already satisfies the >= 2.4.2 requirement, so no
libassuan change is needed.

Build only the cl + cpp bindings via --enable-languages=cl,cpp (replaces
the old gpgme-nopython.patch, which edited the generated configure and no
longer applies). This drops the Qt binding that the old package shipped:
poppler and LibreOffice use Gpgmepp, not QGpgme, and sousage.pl reports
libqgpgme.so as unused; building qt5 would also require Qt5's moc/qmake
on PATH and PKG_CONFIG_PATH, which are not set up in this environment.

Sonames: libgpgme.so.11 and libgpgmepp.so.6 are unchanged, so poppler/LO
need no rebuild for the C++ binding. No compat package is needed
(libqgpgme is no longer built, and it was unused).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
poppler 26.07.0 configure hard-requires Boost >= 1.83 via
find_package(Boost 1.83 CONFIG); the system package was 1.72.0. Boost is
used header-only in poppler's Splash rasterizer for
boost::container::small_vector.

The headers-only recipe is unchanged and verified against 1.91.0: the
install populates boost/container/small_vector.hpp and the CMake CONFIG
files (Boost-1.91.0, boost_headers-1.91.0) report 1.91.0, so poppler's
CONFIG-mode lookup succeeds. Header-only, so no soname/ABI change.

The old bintray SRCURL is dead; the commented upstream URL now points at
archives.boost.io.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Switch CC/CXX from gcc14/g++14 to clang/clang++. clang 22 has full C++23
support and links against the system libstdc++, avoiding a dependency on the
out-of-tree /pkg/gcc-14 libstdc++. That dependency also broke the g-ir-scanner
introspection link with GLIBCXX_3.4.3x undefined references, since the scanner
links its temporary binary with the C driver and could not resolve the
gcc-14-only symbols against the default libstdc++.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Capture the anatomy of a bee file (BEE_VERSION header, SRCURL beehive mirror,
magic comment directives, mee_/bee_ hooks, S/B/D dirs), the local build
invocation and flags, the clang-vs-gcc-14 compiler guidance and g-ir-scanner
libstdc++ gotcha, compat packages, and the commit convention.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
poppler 26.07.0 (LibreOffice 26 dependency cascade) requires
lcms2 >= 2.14; MarIuX has 2.9. Latest upstream is 2.19.1 (now hosted
on GitHub, not SourceForge).

lcms2 2.19.x switched its primary build system to CMake (the tarball
still ships autotools + meson, but bee_configure auto-detects CMake),
so the autotools `--disable-static` flag no longer applies. Replace it
with '-DLCMS2_BUILD_STATIC=OFF`.

liblcms2.so.2 (SONAME unchanged, so no compat package needed), lcms2.pc
reports Version 2.19 (>= 2.14), headers and CLI tools.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- parallel install to guile 3.0.8 since a lot of stuff depends on 2.x
Rename autogen-5.11.1-0.bee to the versionless autogen.be0 layout and
move the version into a BEE_VERSION header, as done for other packages
(e.g. libtool, tiff).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5.11.1 (2010) built against the system Guile 1.8.7; the new configure
requires Guile >= 2.0, so build against the parallel-installed guile2
(2.2.7) via GUILE/GUILD.

The old package also leaked gnulib's extensions.m4 into
/usr/share/aclocal, where the stale serial-9 macro shadowed autoconf
2.71's AC_USE_SYSTEM_EXTENSIONS and broke autoreconf for other packages
(e.g. LibreOffice's bundled libassuan). 5.18.16 installs only autoopts.m4.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The ag.c compile fails with SCM_INTERNAL/SCM_API undefined throughout the
Guile headers.

autoopts' mk-tpl-config.sh patches the Guile headers it will compile against
(rewriting the bare `noreturn` keyword) and locates them via find_libguiledir,
which trusts the stale system `guile-config` (1.8.7) first. Guile 1.8's headers
sit directly in /usr/include with a top-level libguile.h, defeating the
script's version-subdir detection, so it copies Guile 1.8's libguile.h and
libguile/__scm.h into the build tree. The actual compile, though, uses Guile
2.2's headers (GUILE_CFLAGS from pkg-config, -I/usr/include/guile/2.2). Mixing
1.8's __scm.h with 2.2's alist.h/gc.h leaves SCM_INTERNAL/SCM_API undefined.

The Makefile already passes the correct location as LGCFLAGS (= GUILE_CFLAGS),
but find_libguiledir only consults it as a last-resort fallback. Patch it in
mee_patch to honour that -I dir first when it contains libguile/__scm.h, so
header patching matches the Guile the sources compile against. With Guile 2.2
(no bare `noreturn`) fix_guile then correctly no-ops and the pure 2.2 headers
are used.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign in to join this conversation on GitHub.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants